Installare JFlex e Cup su Mac OS X

Se anche voi siete degli sviluppatori/programmatori/smanettoni/altro che per ragioni che possono andare dal lavoro allo studio passando per il cazzeggio, avete bisogno di una buona coppia di programmi per generare scanner (o analizzatore lessicale) e parser (o analizzatore sintattico), JFlex e Cup sono due programmi open source in Java che possono fare al caso vostro.

Tralasciando l’installazione su Linux e Windows che è già ben documentata altrove in rete e fatto salvo che Mac OS X è un sistema *NIX-like quindi si può tranquillamente seguire la procedura di installazione per Linux, ecco i pochi passi necessari per installare in maniera alternativa i suddetti programmi su Mac OS X in maniera da poterli utilizzare direttamente da terminale richiamandone il nome da riga di comando senza dover settare variabili d’ambiente, cambiare tipologia di shell annessi e connessi.

Per prima cosa procuriamoci l’occorrente: i pacchetti di JFlex e Cup dai repository di Ubuntu.

A questo punto aprite il terminale di Mac OS X (Applicazioni->Utility->Terminale) e posizionatevi con il comando cd nella cartella dove avete appena scaricato i due pacchetti . deb (es. ~$cd Downloads).

Digitate sempre da terminale il comando ar vx seguito dal nome del pacchetto .deb che volete decomprimere.

~$ar vx nome_pacchetto.deb

A questo punto nella cartella in cui vi trovate dovreste avere 3 documenti che contengono le informazioni del pacchetto .deb appena decompresso e precisamente:

  • debian-binary
  • control.tar.gz
  • data.tar.gz

I primi due documenti (debian-binary e control.tar.gz ) non ci serviranno nel prosegui quindi possono essere tranquillamente eliminati. Decomprimiamo il terzo (data.tar.gz) o facendoci doppio click con il mouse oppure digitando da terminale:

~$tar -xvzf data.tar.gz

Doveste ora avere una cartella usrcon questa struttura:

usr
-bin/
-share/
--doc/
--doc-base/
--java/
--man/

A questo punto non ci rimane che spostare tutto il contenuto della suddetta cartella usr nell’omonima cartella usr presente nella nostra installazione di Mac OS X con il comando (vi verrà chiesta la password dell’utente root):

~$sudo mv usr/* /usr

A questo punto dovete solo ripetete le operazioni appena descritte per l’altro applicativo che vi resta da installare.

Dovreste avere ora a disposizione JFlex e Cup installati sul vostro Mac ed avviabili da linea comando semplicemente digitando il loro nome (~$jflex o ~$cup) ed in più avrete a disposizione le pagine del manuale accessibili con il comando man (quindi ~$man jflex o ~$man cup ).

Se riscontrate dei problemi nell’avviare Cup è altamente probabile che è dovete andare a mettere a posto i symlink del programma che puntano all’eseguibile sbagliato. Nello specifico dovrete eseguire da linea di comando i seguenti comandi:


~$sudo rm /usr/share/java/cup
~$sudo ln -sf /usr/share/java/cup-versione_programma.jar /usr/share/java/cup

JFlex non dovrebbe soffrire di questo genere di problemi.

Essendo JFlex e Cup due programmi scritti in Java, se avete intuito il modus operandi del sottoscritto, potete utilizzare la procedura descritta nello specifico per questi due applicativi a tutti i programmi scritti in linguaggi di programmazione e che fanno riferimento a librerie presenti sia su Linux che su Mac OS X, che non sono assolutamente pochi.

3 pensieri riguardo “Installare JFlex e Cup su Mac OS X

  1. ho seguito la guida. Jflex dovrebbe andare ma Cup mi da questo problema:

    Exception in thread “main” java.lang.NoClassDefFoundError: java_cup/Main
    Caused by: java.lang.ClassNotFoundException: java_cup.Main
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)

    puo essere un problema di PATH???

Rispondi