Using external parsers with gmaster

Monday, March 19, 2018 71 Comments

gmaster comes pre-built with support for C#, C, C++, VB.Net and Java. But, you are not limited to these five languages; there are ways to develop and install support for additional languages.

We originally developed the external parser support for SemanticMerge, (which is now a key piece in gmaster), so you can check this guide we wrote explaining how to add new languages.

Users have already contributed parsers for Delphi, F#, Go, and a few others.

In this blogpost, I'm going to cover how to install an external parser in gmaster to add semantic support for new languages. For this demonstration, I chose the F# parser.

A semantic diff between two revisions of a F# file

You can refer to the documentation above to learn how to code your own external parser.

Configure gmaster to use an external parser

To install an external parser, you must follow these steps:

  1. Create a file named externalparsers.conf inside gmaster's configuration directory. If you installed gmaster at the default location, the configuration directory is %LOCALAPPDATA%\gmaster\config.
  2. Add to it the configuration of your external parser(s). This is what my configuration file looks like:
    External parsers configuration file

    The format of this configuration file is quite simple. One parser per line, each line including the extension of the file (including the dot), followed by an equal sign, and the full path of the executable, without quotation marks. For example:

    .<extension>=<executable path>

    The same format works if your parser is, for example, written in Java. You could have something like this:

    .myext=java -jar D:\myparser.jar
  3. Once you have your configuration ready, you must restart gmaster for the changes to take effect.

Diffing F# code

Now, every time gmaster tries to open a F# file revision to show its semantic diff, it will first check the externalparsers.conf configuration file. Then, it will execute the parser, et voilá! You are ready to diff your code semantically:

A semantic visual diff inside gmaster
Tip: Remember that you can undock the diff window to make it as big as you want, as I did for the screenshot.

Merging F# code

And here is what a modified-modified conflict looks like in SemanticMerge, correctly detected thanks to the external parser:

A semantic merge using the external parser

Wrapping up

That's all for today. If you have suggestions, doubts or problems, please don't hesitate to leave a comment, or ping us on Twitter at @gmasterscm.

Happy merging!

We develop gmaster, a Git GUI with semantic superpowers. It parses the code to really understand how it was refactored and then diff it and merge it as a human would do, matching methods instead of lines.

If you want to try it, download it from here.

We are also the developers of SemanticMerge and Plastic SCM, a full-featured version control.

71 comments:

  1. Please add 2 spaces in TAB (Options/Editor Options/TAB).

    ReplyDelete
  2. Francisco and Pablo, greetings! I am back from the edge, I have been gone for 3 years+.

    I have been working with Ralf Koban's external parsers for XML and Resx for a while now. Any chance these parsers can become first class citizens through some mechanism yet to be defined?

    I got through the installation process with ease manually, now repeat that across multiple skill levels hundreds or thousands of times. I think you see the issue. Manual build, manual edit ... does not scale. In my current assignment, the adoption rate is near zero, and XML is a pain point. Ralf's contributions are worth your blog, how do you feel about easing the adoption?

    Regards,

    ~Michael

    ReplyDelete
  3. This comment has been removed by the author.

    ReplyDelete
  4. Webroot Antivirus is the fastest and easiest software to download, install and run.webroo.com/safe In addition, it automatically updates without slowing down your system. Because of which you always get the most protection. So we recommend you to download Webroot Antivirus. Webroot Antivirus detects online threats and blocks them quickly. You can install webroo.com/safe by visiting our website. And you can also download Webrot from windows 10 install webroot with key code . With Webrot's product you will be able to fully protect yourself online and offline For more information visit webroo.com/safe our website.

    ReplyDelete
  5. To activate the webroot safe , you need to redeem your webroot product key which you will find in your registered mail ID. Through webroo.com/safe keycode and webroot geek squad download you can download, install webroot . create a webroot safe account to manage webroot key code and webroo.com/safe activation code key subscription.Create a WebRot secure account to manage the webrot key code and install webrot on the new computer key subscription.Through Webroot geek squad download you can download and install webroot.Visit webroo.com/safe for installing webroot. If you do not have an account, go to Find My Webroot Account and create an account.

    ReplyDelete
  6. Mcafee antivirus is a commonly used antivirus that detects and kills PC infections, enables mail worms, Trojan programs, etc. For a more accurate visit, to save your PC or PC from infection and ensure data, download the Mcafee Antivirus by visiting the mcafee.com/activate website. mcafee activation can be easily processed using the activation code from the mcafee retail card and online on the mcafee.com/activate website page. Click our mcafee.com/activate link for more information.

    To download mcafee antivirus software, go to mcafee.com/activate and follow the easy procedure. Download and install Mcafee antivirus with active key. Learn more about its premium services by visiting mcafee.com/activate and take advantage of Mcafee Antivirus. To avoid any interruptions, visit the link given by us at mcafee.com/activate and follow the instructions.

    ReplyDelete
  7. Download and install Mcafee antivirus with active key by going to mcafee.com/activate . To learn more about its premium services, visit mcafee.com/activate and take advantage of Mcafee Antivirus. To avoid any interruptions, visit the link given at mcafee.com/activate and follow the instructions.

    Download and install Mcafee antivirus with active key by going to mcafee.com/activate . To learn more about its premium services, visit mcafee.com/activate and take advantage of Mcafee Antivirus. To avoid any interruptions, visit the link given at mcafee.com/activate and follow the instructions.

    ReplyDelete
  8. The Amazon My TV Code program requires the customer to have an Amazon account and a streaming device or TV.amazon.com/mytv Amazon Prime Video is available on almost all streaming devices like Roku, Amazon Fire TV, Chromecast. For this you just have to go to Amazon and activate amazon with the help of amazon.com/mytv . You can visit our website amazon.com/mytv for details of the entire process.

    ReplyDelete
  9. Amazon Prime is a subscription service that caters to the media needs of people through the Amazon Prime platform. amazon.com/mytv Notifies visitors about topics such as Register TV, Amazon Prime TV and MyTV code. To register your device on the Amazon website you go to our website amazon.com/mytv and enter the given code. You can do this by installing the Amazon Instant Video application on your smart TV, or the digital media player or video game console connected to your TV by visitingamazon.com/mytv the link amazon my tv provided by us in the description.

    People's media needs can be met through the Amazon Prime platform. Amazon Prime is a subscription service, which can be subscribed by going to the link amazon.com/mytv . To know more about this you can visit the given link amazon.com/mytv and also subscribe. You can use the Amazon Instant Video application on your smart TV or by installing a digital media player or video game console, which will be given by the link amazon.com/mytv in my TV description.

    ReplyDelete
  10. If you are facing issues due to your Fix iPhone cannot get mail, Make sure your phone is connected to the internet. You might need to reset your network settings, which control how your iPhone connects to your cellular network and Wi-Fi. 2.Try logging into your email on a different device, or check with your email service provider to ensure that the system isn't temporarily down.

    ReplyDelete
  11. If you are facing issues due to yahoo account recovery Visit https://login.yahoo.com/forgot in a web browser. This website will help you recover your Yahoo account by sending a confirmation code to your backup email address or phone number. You must have access to your recovery email address or phone number to restore your account.
    AOL sign in | amazon.com/redeem | 123.hp.com/setup | Office setup

    ReplyDelete
  12. I admire this article for the well-researched content and excellent wording. I got so involved in this material that I couldn’t stop reading. I am impressed with your work and skill. Thank you so much. Feel free to visit my website; 안전놀이터

    ReplyDelete
  13. My brother suggested I would possibly like this web site. He used to be entirely right. This put up actually made my day. You can not consider just how much time I had spent for this information! Thanks! Feel free to visit my website; 온라인카지노

    ReplyDelete
  14. It's late finding this act. At least, it's a thing to be familiar with that there are such events exist. I agree with your Blog and I will be back to inspect it more in the future so please keep up your act. Feel free to visit my website; 바카라사이트

    ReplyDelete
  15. Great post! I am actually getting ready to across this information, is very helpful my friend. Also great blog here with all of the valuable information you have. Keep up the good work you are doing here. Feel free to visit my website; 토토

    ReplyDelete
  16. In the grand design of things you secure a B+ just for effort and hard work. Where exactly you misplaced everybody ended up being in your particulars. As as the maxim goes, details make or break the argument.. And that could not be more true at this point. Having said that, let me tell you precisely what did work. Your text is actually pretty convincing which is probably why I am making an effort to comment. I do not make it a regular habit of doing that. Secondly, whilst I can notice the leaps in reasoning you make, I am not sure of just how you appear to connect the details that help to make your final result. For right now I will yield to your point but wish in the future you actually link the dots much better.일본경마

    ReplyDelete
  17. Thanks for the sensible critique. Me and my neighbor were just preparing to do some research about this 야한동영상. We got a grab a book from our area library but I think I learned more clear from this post. I’m very glad to see such fantastic information being shared freely out there.

    ReplyDelete
  18. Having read this I thought it was very enlightening 오피. I appreciate you taking the time and energy to put this informative article together. I once again find myself spending a significant amount of time both reading and commenting. But so what, it was still worth it!

    ReplyDelete
  19. Wow effortless, you are so creative 타이마사지. I am so grateful for your post. Much thanks again. Really Great.

    ReplyDelete
  20. Right now it seems like Drupal is the best blogging platform available right now. (from what I’ve read) Is that what you’re using on your blog?

    출장안마

    ReplyDelete
  21. I do not even know how I ended up here, but I thought this post was good. I do not know who you are but definitely you are going to a famous blogger if you aren’t already ?? Cheers!
    II스포츠토토

    ReplyDelete
  22. Thanks for sharing this marvelous post. I m very pleased to read this article.
    온라인카지노

    ReplyDelete
  23. This is really helpful post and very informative there is no doubt about it.
    스포츠토토

    ReplyDelete
  24. All your hard work is much appreciated. This content data gives truly quality and unique information. I’m definitely going to look into it. Really very beneficial tips are provided here and, Thank you so much. Keep up the good works.
    온라인카지노

    ReplyDelete
  25. 카지노사이트 Fantastic beat ! I would like to apprentice while you amend your website,
    how could i subscribe for a blog website? The account helped me a acceptable deal.
    I had been a little bit acquainted of this your broadcast
    provided bright clear idea

    ReplyDelete
  26. Pretty good post. I just stumbled upon your blog and wanted to say that I have really enjoyed reading your blog posts. Any way I’ll be subscribing to your feed and I hope you post again soon.



    바카라사이트

    ReplyDelete
  27. Greetings from Ohio! I’m bored to tears at work so I decided to check out your website on my iphone during lunch break. I love the info you provide here and can’t wait to take a look when I get home. I’m surprised at how fast your blog loaded on my mobile .. I’m not even using WIFI, just 3G .. Anyhow, great site!| 스포츠토토

    ReplyDelete
  28. Thanks designed for sharing such a fastidious thinking,
    post is good, thats why i have read it fully

    토토사이트

    ReplyDelete
  29. 토토 We stumbled over here from a different web address and thought I might as well check things out. I like what I see so now i am following you. Look forward to looking into your web page repeatedly.

    ReplyDelete
  30. Nice!I will definitely recommend your website to everyone. You have a very good gloss. Write more high-quality articles. 토토

    ReplyDelete
  31. Your article is very interesting. I think this article has a lot of information needed, looking forward to your new posts. Get permission to share . 온라인카지노

    ReplyDelete
  32. It’s very informative and you are obviously very knowledgeable in this area. 카지노

    ReplyDelete
  33. I will truly value the essayist's decision for picking this fantastic article fitting to my matter. 바카라사이트

    ReplyDelete
  34. I'm so happy to finally find a post with what I want. casino You have inspired me a lot. If you are satisfied, please visit my website and leave your feedback.


    ReplyDelete
  35. Hi there, You have done an excellent job. I will certainly digg it and personally suggest to my friends.
    I am confident they will be benefited from this web site. 온라인카지노

    ReplyDelete
  36. I havent any word to welcome this post.....Really i am inspired from this post....the individual who make this post it was an awesome human..thanks for imparted this to us. 토토사이트


    ReplyDelete
  37. I found this article on this site while looking for an article on this topic. Reading your post made me feel like an expert in this field. There are several articles on these topics posted on my site. Please visit my website once. 메리트카지노

    ReplyDelete
  38. It's the same topic , but I was quite surprised to see the opinions I didn't think of. My blog also has articles on these topics, so I look forward to your visit.오공슬롯


    ReplyDelete
  39. When did it start? The day I started surfing the Internet to read articles related to . I've been fond of seeing various sites related to 카지노사이트 around the world for over 10 years. Among them, I saw your site writing articles related to and I am very satisfied.

    ReplyDelete
  40. Hello ! I am the one who writes posts on these topics카지노사이트 I would like to write an article based on your article. When can I ask for a review?

    ReplyDelete
  41. When did you start writing articles related to ? To write a post by reinterpreting the 메리트카지노 I used to know is amazing. I want to talk more closely about , can you give me a message?

    ReplyDelete
  42. I will recommend your website to everyone. You have a very good gloss. Write more high-quality articles. 바카라사이트

    ReplyDelete
  43. I came to this site with the introduction of a friend around me and I was very impressed when I found your writing. I'll come back often after bookmarking! casino trực tuyến

    ReplyDelete
  44. I'm writing on this topic these days, 우리카지노 , but I have stopped writing because there is no reference material. Then I accidentally found your article. I can refer to a variety of materials, so I think the work I was preparing will work! Thank you for your efforts.

    ReplyDelete
  45. While looking for articles on these topics, I came across this article on the site here. As I read your article, I felt like an expert in this field. I have several articles on these topics posted on my site. Could you please visit my homepage? 메이저놀이터순위

    ReplyDelete
  46. Your article is very helpful.You can visit my website 토토사이트

    ReplyDelete
  47. Fantastic web site. Lots of helpful info here 온라인경마

    ReplyDelete
  48. Thanks for posting this info. I just want to let you know that I just check out your site and I find it very interesting and informative. 릴게임

    ReplyDelete
  49. This is a great post and enjoy the look of your blog very much. Thanks for sharing. 토토사이트

    ReplyDelete
  50. Pretty nice post. I just stumbled upon your weblog and wanted to say that I have really enjoyed browsing your blog posts. After all I’ll be subscribing to your feed and I hope you write again soon 먹튀검증업체 I would like to write an article based on your article. When can I ask for a review?!

    ReplyDelete
  51. I am looking for and I love to post a comment that "The content of your post is awesome" Great work! 바카라사이트

    ReplyDelete
  52. Amazing knowledge and I like to share this kind of information with my friends and hope they like it they why I do. 바둑이사이트넷

    ReplyDelete
  53. Great web site. A lot of useful information here. I’m sending it to several friends and also sharing in delicious. And obviously, thanks in your effort! 텍사스홀덤사이트

    ReplyDelete
  54. Positive site, where did u come up with the information on this posting? I'm pleased I discovered it though, ill be checking back soon to find out what additional posts you include. ufabet6666

    ReplyDelete
  55. I’m very pleased to discover this site. I want to to thank you for ones time for this particularly wonderful read!! I definitely savored every part of it and i also have you saved as a favorite to see new information on your blog. 메이저토토사이트

    ReplyDelete
  56. It's amazing. I want to learn your writing skills. In fact, I also have a website. If you are okay, please visit once and leave your opinion. Thank you. 바카라게임사이트

    ReplyDelete
  57. I think your website has a lot of useful knowledge. I'm so thankful for this website.
    I hope that you continue to share a lot of knowledge.
    This is my website.
    넷마블머니상

    ReplyDelete
  58. I was reading some of your articles on this website and I conceive this web site is very instructive! Retain putting up. 바카라사이트

    ReplyDelete
  59. This is the perfect post.안전놀이터 It helped me a lot. If you have time, I hope you come to my site and share your opinions. Have a nice day.

    ReplyDelete
  60. I figure this article can be enhanced a tad. There are a couple of things that are dangerous here, and if you somehow managed to change these things, this article could wind up a standout amongst your best ones. I have a few thoughts with respect to how you can change these things. 메이저놀이터


    ReplyDelete
  61. Which is some inspirational stuff. Never knew that opinions might be this varied. Thank you for all the enthusiasm to provide such helpful information here. 온라인바카라

    ReplyDelete
  62. This post is really very helpful article to resolve QuickBooks Update Error 15243. but still if you have any issues related QuickBooks Payroll Error PS036 then connect with Asquare Cloud hosting at +1(855)-738-0359.

    ReplyDelete
  63. When did you start writing articles related to ? To write a post by reinterpreting the 메이저사이트추천 I used to know is amazing. I want to talk more closely about , can you give me a message?

    ReplyDelete
  64. Very useful for me, as it contains lot of information. Kaiser Luxury Emporium

    ReplyDelete
  65. I came to this site with the introduction of a friend around me and I was very impressed when I found your writing. I'll come back often after bookmarking! totosite

    ReplyDelete
  66. Very useful for me, as it contains lot of information. Soap Scrub Washes

    ReplyDelete
  67. I've been looking for photos and articles on this topic over the past few days due to a school assignment, majorsite and I'm really happy to find a post with the material I was looking for! I bookmark and will come often! Thanks :D

    ReplyDelete